iT邦幫忙

2023 iThome 鐵人賽

DAY 2
1
自我挑戰組

和地鼠做30天好朋友系列 第 2

和地鼠玩個終極密碼吧

  • 分享至 

  • xImage
  •  

自我挑戰組就是如此愜意、自由...不用在那邊解釋543的...Code as Tech,我想就一切用code來j4吧!

我:地鼠地鼠,我們來玩個終極密碼吧!
地鼠:不要

全劇終

威~ 怎麼可以這樣呢...,首先,讓我們拆解一下終極密碼

  1. 密碼(最好是整數啦,浮點數先不要❌)
  2. 讓人猜
  3. 比對答案、如果沒有一樣就繼續猜

我覺得啊,面試考終級密碼真的是很有鑑別度的題目 👈 自己說...
以後我做面試官應該要考這一題...(面試者:這也太簡單...

為什麼呢 (還要說啊...
根據以上的情境你可以知道這個題目可以考到

  • if-else
  • loop
  • 亂數 (如果貼心的考官還可以做考題提示,以免面試者忘記語法之類的...)
  • 之後問他個 Big O 是多少 (這個梗來自於這個影片)

至於亂數的部分,其實 golang 就是兩行:

r := rand.New(rand.NewSource(time.Now().UnixNano())) 
result := r.Intn(101)

讓我們看看 Intn 這個文件怎麼說:
來人啊,上文件! https://pkg.go.dev/math/rand#Intn

func Intn ¶
func Intn(n int) int
Intn returns, as an int, a non-negative pseudo-random number in the half-open interval [0,n) from the default Source. It panics if n <= 0.

其實就是生成 0~ n 這個裡面隨機選一個數字出來,啊你問我有沒有包含 n 呢
自己問 ChatGPT 啊

你沒有發現[0,n) 這個很特別嗎?哈 我也是剛剛才發現,可以參考wiki

當然就是沒有包含 n 啦

另外解釋前面那個r := rand.New(rand.NewSource(time.Now().UnixNano())) 這一句話...
其實電腦很笨的,所謂的亂數產生電腦背後有不同的作法與算法,是讓你看起來很像亂數,如果你有寫過C語言也就很熟悉也需要這樣宣告,這在我們程式界裡俗稱是亂數種子

亂數部分講差不多了...上程式了囉

package main

import (
	"fmt"
	"math/rand"
	"time"
)

func main(){
	var answer int

	r := rand.New(rand.NewSource(time.Now().UnixNano())) 
	result := r.Intn(101)
	
	loop := true
	
	for (loop) {
		fmt.Printf("Please Enter a number(1-100): ")
		fmt.Scanf("%d", &answer)

		switch {
			case (result < answer):
				fmt.Printf("比 %d 還小\n",answer)
			case (result > answer):
				fmt.Printf("比 %d 還大\n",answer)
			case (result == answer):
				fmt.Println("答對了,爆炸!")
				loop = false
				break
			default:
				loop = true
		}
	}

	fmt.Printf("result is %d\n",result)
	fmt.Println("Game is over!")
}

昨天,終於有一隻噴火龍了,不知道題目改成「三十天都抓一隻寶可夢」該有多好...
https://ithelp.ithome.com.tw/upload/images/20230903/201069994nSzIEsBeq.png


上一篇
地鼠,躺平吧
下一篇
地鼠,查一下ip 吧
系列文
和地鼠做30天好朋友12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言